package com.itheima.b_life;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

/**
 * 修改Servlet对象的初始化时机(创建)
 * loadOnStartup: 设置Servlet对象的初始化时机
 *      取值为正整数,数越小优先级越高
 */
@WebServlet(urlPatterns = "/life",loadOnStartup = 1)
public class LifeServlet implements Servlet {

    /**
     * 实例化: 实例化对象,创建对象
     * 初始化方法: 在类对象创建完毕后,完成类的初始化工作
     * 调用者: Tomcat
     * 执行时机: 在当前类对象实例化完毕后,立即调用此方法执行
     * 执行次数: 1次
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("LifeServlet中的init方法执行了，servlet出生了");
    }


    /**
     * 提供服务的方法: 每次调用此类时,都会执行service方法处理业务
     * 调用者: Tomcat
     * 执行时机: 每次请求来的时候
     * 执行次数: 请求一次执行一次
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("LifeServlet中的servlet方法执行了，servlet为您提供服务");
    }


    /**
     * 销毁方法: 当servlet类从内存移除前调用此方法进行销毁操作
     * 调用者: Tomcat
     * 执行时机: 正常关闭服务器,项目从服务器上移除
     * 执行次数: 1次
     */
    @Override
    public void destroy() {
        System.out.println("LifeServlet中的destroy方法执行了，servlet销毁了");
    }

    /**
     * 了解: 通过此方法获取当前Servlet的配置信息,
     *       配置信息已经在类初始化时传递给当前类了
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    /**
     * 了解: 获取当前类的基本信息
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }


}
